//
//  UIViewController+JFBase.h
//  JFBase
//
//  Created by Alan Wang on 2019/4/17.
//  Copyright © 2019 Alan Wang. All rights reserved.
//

#import <UIKit/UIKit.h>

typedef void(^baseCallBack)(id _Nullable data);
@protocol JFBaseViewControllerDelegate <NSObject>
@optional
//是否需要隐藏导航栏
-(BOOL)isHideNav;
//是否隐藏导航栏底部的分割线
-(BOOL)isHideNavBootomLine;
//导航栏背景颜色
-(UIColor*_Nullable)navBackGroundColor;
//默认是白色的
-(UIColor*_Nullable)navTintColor;
//分割线颜色
-(UIColor*_Nullable)navLineColor;
//黑色 还是白色状态栏
-(UIBarStyle)barStyle;
@end


NS_ASSUME_NONNULL_BEGIN

@interface UIViewController (JFBase)<JFBaseViewControllerDelegate,UIGestureRecognizerDelegate>

//控制器名字
@property(nonatomic,copy) NSString* controlName;
//通用数据传递
@property(nonatomic,strong) NSMutableDictionary* userInfo;
//可以用于 事件回传数据或页面结束回传数据
@property(nonatomic,copy)  baseCallBack callBack;

//是否需要启用base里面的设置 默认启用
@property(nonatomic,assign) BOOL baseEnable;

//@property(nonatomic,weak)  id<UIGestureRecognizerDelegate> gesdelegate;


#pragma -- 实现通知相关
//监听某个名字的通知 正常不需要手动移除监听（在控制器生命周期内要移除的情况只能手动移除）
-(void)listenNotification:(NSString*)notiName;
//监听一系列通知    正常不需要手动移除监听（在控制器生命周期内要移除的情况只能手动移除）
-(void)listenNotificationWithArr:(NSArray*)notiNameArr;
//当前已经监听的通知 (可以查看父类监听的通知)
-(NSArray*)listenedNotification;
//收到通知的触发事件 子类重写 实现通知处理
-(void)notificationCenter:(NSNotification*)noti;

-(void)back;
-(UIImage*)backImage;
-(UIImage*)shareImage;

//设置左侧消息按钮
-(UIBarButtonItem*)msgLeftItem;

//设置右侧侧消息按钮
-(UIBarButtonItem*)msgRightItem;

+(UIViewController *)topViewController;

@end

NS_ASSUME_NONNULL_END
